<?php
namespace system\install\controller;

class Index{

    private $lock_filename = "install.lock";
    private $is_step = true;

    function __construct(){
		if( file_exists( _APP_PATH_ . '/data/' . $this->lock_filename ) && $GLOBALS['config']['database']['database']!='' ){
			echo '系统已经安装。';
			exit();
		}
    }

    function index(){
        
      require view('index.tpl.php');
    } 

    function step1(){
      $this->is_step=true;
      require view('step1.tpl.php');
    } 

    function step2(){
        
      require view('step2.tpl.php');
    } 

    
    function step3(){
		
		// 提交表单后, 获得mysql账号信息
		$host = trim($_POST['db_host']);
		$port =	trim($_POST['db_port']);
		$dbname = trim($_POST['db_name']);
		$user = trim($_POST['db_user']);
		$pwd = trim($_POST['db_pwd']);
		$table_prefix= trim($_POST['table_prefix']);

		$options = array(
			\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4 ',
		); 

		/* 执行mysql数据文件.  参数: 数据文件 , 数据库账号信息 */
		// 连接mysql数据库
		try {
			$conn= new \PDO("mysql:host=$host;port=$port",$user,$pwd,$options);
		}catch (\PDOException $e){	 
			$this->is_step=false;
			$error_info = '连接MySQL数据库服务器错误：' . $e->getMessage() ;
			require view('step3.tpl.php');
			exit();
		}

		// 删除旧的数据库 
		try {
			$conn->query( "DROP database IF EXISTS {$dbname} ;" );
		}catch (\PDOException $e){	 
			$this->is_step=false;
			$error_info = '无法删除【旧】数据库, 请检查MySQL操作权限。错误信息: ' . $e->getMessage() ;
			require view('step3.tpl.php');
			exit();
		}

		// 重新建立新数据库
		try {
			$conn->query( "CREATE DATABASE {$dbname} CHARACTER SET utf8"  );
		}catch (\PDOException $e){	
			$this->is_step=false; 
			$error_info = '无法创建数据库, 请检查MySQL操作权限。错误信息: ' . $e->getMessage() ;
			require view('step3.tpl.php');
			exit();
		}

		// 选择数据库
		try {
			$conn->query("use {$dbname} ");
		}catch (\PDOException $e){	 
			$this->is_step=false;
			$error_info = "连接MySQL数据库 [{$dbname}] 错误: " . $e->getMessage() ;
			require view('step3.tpl.php');
			exit();
		}

		// 导入数据文件
		require _APP_PATH_ ."/system/install/sql_install.php";
		$sql_install = str_replace( 'deep_' , $table_prefix , $sql_install ) ;
		$conn->query($sql_install);


		// 生成已安装文件
		$config_str = <<<EOD
<?php
/*****************************
* PHPwork官方网址： ruanjiesoft.com
* PHPwork应用官方QQ群： 317075601
* PHPwork应用开发者QQ： 1980572700
* 不得使用本软件用于非法用途，不得违反国家法律。
*************************************/

// 数据库 \$GLOBALS['config']['database']
return [

    // 数据库类型
    'type'            => 'mysql',
    // 服务器地址
    'hostname'        => '$host',
    // 端口
    'hostport'        => '$port',
    // 数据库名
    'database'        => '$dbname',
    // 用户名
    'username'        => '$user',
    // 密码
    'password'        => '$pwd',
    // 数据库编码默认utf8
    'charset'         => 'utf8mb4',
    // 数据库表前缀
    'prefix'          => '$table_prefix',

];

EOD;

		file_put_contents( _APP_PATH_ . '/data/database.php'  , $config_str );
		file_put_contents( _APP_PATH_ . '/data/' . $this->lock_filename , '' );

		// 安装完成
		require view('step3.tpl.php');
		
    } 



    //
    private function is_dir_write($dir){
      $d= _APP_PATH_ . '/' . $dir;
      if(is_dir($d)) {
        $file_hd=@fopen($d.'/_test.txt','w');
        if($file_hd){
          @fclose($file_hd);
          @unlink($d.'/_test.txt');
          echo "<span  style='color:green'><b>√</b></span>";
        }else{
          echo "<span  style='color:red'><b>×</b></span>";
          $this->is_step=false;
        }
        }else{
        echo '不存在';
        $this->is_step=false;
      }
    }
  
    
}